#pragma once

#define LANGID_JAPANESE MAKELANGID(LANG_JAPANESE,SUBLANG_DEFAULT)
#define LCID_JAPANESE MAKELCID(LANGID_JAPANESE,SORT_DEFAULT)

#define EVENT_APPLICATION_FIRST 2100
#define EVENT_UPDATE 2100
#define EVENT_QUIT_REQUESTED 2101
#define EVENT_ACTIVATED 2102
#define EVENT_DEACTIVATED 2103
#define EVENT_APPLICATION_LAST 2103

#define EVENT_MOUSE_FIRST 500
#define EVENT_MOUSE_CLICKED 500
#define EVENT_MOUSE_PRESSED 501
#define EVENT_MOUSE_RELEASED 502
#define EVENT_MOUSE_MOVED 503
#define EVENT_MOUSE_DRAGGED 504
#define EVENT_MOUSE_WHEEL_MOVED 505
#define EVENT_MOUSE_ENTERED 506
#define EVENT_MOUSE_EXITED 507
#define EVENT_MOUSE_LAST 507
#define EVENT_WHEEL_FORWARD 1
#define EVENT_WHEEL_BACKWARD -1
#define EVENT_WHEEL_NEUTRAL 0

#define STATE_SHIFT_MASK 1
#define STATE_CTRL_MASK 2
#define STATE_META_MASK 4
#define STATE_ALT_MASK 8
#define STATE_ALT_GRAPH_MASK 0x20
#define STATE_BUTTON1_MASK 0x10
#define STATE_BUTTON2_MASK 8
#define STATE_BUTTON3_MASK 4

#define MSG_MY_FIRST WM_APP+0x960
#define MSG_DUMMY WM_APP+0x961
#define MSG_SHOWCURSOR WM_APP+0x962
#define MSG_QUIT_REQUESTED WM_APP+0x964
#define MSG_IME_ENABLE WM_APP+0x965
#define MSG_ACTIVATED WM_APP+0x966
#define MSG_DEACTIVATED WM_APP+0x967
#define MSG_DSHOW_EVENT WM_APP+0x968
#define MSG_SETCURSOR WM_APP+0x969
#define MSG_MY_LAST WM_APP+0x96A

#define EVENT_KEY_FIRST 400
#define EVENT_KEY_TYPED 400
#define EVENT_KEY_PRESSED 401
#define EVENT_KEY_RELEASED 402
#define EVENT_KEY_LAST 402

#define EVENT_INPUT_METHOD_FIRST 1100
#define EVENT_TEXT_CHANGED 1100
#define EVENT_INPUT_METHOD_LAST 1100

#define JAVA_VK_0	48
#define JAVA_VK_1	49
#define JAVA_VK_2	50
#define JAVA_VK_3	51
#define JAVA_VK_4	52
#define JAVA_VK_5	53
#define JAVA_VK_6	54
#define JAVA_VK_7	55
#define JAVA_VK_8	56
#define JAVA_VK_9	57
#define JAVA_VK_A	65
#define JAVA_VK_ACCEPT	30
#define JAVA_VK_ADD	107
#define JAVA_VK_AGAIN	65481
#define JAVA_VK_ALL_CANDIDATES	256
#define JAVA_VK_ALPHANUMERIC	240
#define JAVA_VK_ALT	18
#define JAVA_VK_ALT_GRAPH	65406
#define JAVA_VK_AMPERSAND	150
#define JAVA_VK_ASTERISK	151
#define JAVA_VK_AT	512
#define JAVA_VK_B	66
#define JAVA_VK_BACK_QUOTE	192
#define JAVA_VK_BACK_SLASH	92
#define JAVA_VK_BACK_SPACE	8
#define JAVA_VK_BEGIN	65368
#define JAVA_VK_BRACELEFT	161
#define JAVA_VK_BRACERIGHT	162
#define JAVA_VK_C	67
#define JAVA_VK_CANCEL	3
#define JAVA_VK_CAPS_LOCK	20
#define JAVA_VK_CIRCUMFLEX	514
#define JAVA_VK_CLEAR	12
#define JAVA_VK_CLOSE_BRACKET	93
#define JAVA_VK_CODE_INPUT	258
#define JAVA_VK_COLON	513
#define JAVA_VK_COMMA	44
#define JAVA_VK_COMPOSE	65312
#define JAVA_VK_CONTEXT_MENU	525
#define JAVA_VK_CONTROL	17
#define JAVA_VK_CONVERT	28
#define JAVA_VK_COPY	65485
#define JAVA_VK_CUT	65489
#define JAVA_VK_D	68
#define JAVA_VK_DEAD_ABOVEDOT	134
#define JAVA_VK_DEAD_ABOVERING	136
#define JAVA_VK_DEAD_ACUTE	129
#define JAVA_VK_DEAD_BREVE	133
#define JAVA_VK_DEAD_CARON	138
#define JAVA_VK_DEAD_CEDILLA	139
#define JAVA_VK_DEAD_CIRCUMFLEX	130
#define JAVA_VK_DEAD_DIAERESIS	135
#define JAVA_VK_DEAD_DOUBLEACUTE	137
#define JAVA_VK_DEAD_GRAVE	128
#define JAVA_VK_DEAD_IOTA	141
#define JAVA_VK_DEAD_MACRON	132
#define JAVA_VK_DEAD_OGONEK	140
#define JAVA_VK_DEAD_SEMIVOICED_SOUND	143
#define JAVA_VK_DEAD_TILDE	131
#define JAVA_VK_DEAD_VOICED_SOUND	142
#define JAVA_VK_DECIMAL	110
#define JAVA_VK_DELETE	127
#define JAVA_VK_DIVIDE	111
#define JAVA_VK_DOLLAR	515
#define JAVA_VK_DOWN	40
#define JAVA_VK_E	69
#define JAVA_VK_END	35
#define JAVA_VK_ENTER	10
#define JAVA_VK_EQUALS	61
#define JAVA_VK_ESCAPE	27
#define JAVA_VK_EURO_SIGN	516
#define JAVA_VK_EXCLAMATION_MARK	517
#define JAVA_VK_F	70
#define JAVA_VK_F1	112
#define JAVA_VK_F10	121
#define JAVA_VK_F11	122
#define JAVA_VK_F12	123
#define JAVA_VK_F13	61440
#define JAVA_VK_F14	61441
#define JAVA_VK_F15	61442
#define JAVA_VK_F16	61443
#define JAVA_VK_F17	61444
#define JAVA_VK_F18	61445
#define JAVA_VK_F19	61446
#define JAVA_VK_F2	113
#define JAVA_VK_F20	61447
#define JAVA_VK_F21	61448
#define JAVA_VK_F22	61449
#define JAVA_VK_F23	61450
#define JAVA_VK_F24	61451
#define JAVA_VK_F3	114
#define JAVA_VK_F4	115
#define JAVA_VK_F5	116
#define JAVA_VK_F6	117
#define JAVA_VK_F7	118
#define JAVA_VK_F8	119
#define JAVA_VK_F9	120
#define JAVA_VK_FINAL	24
#define JAVA_VK_FIND	65488
#define JAVA_VK_FULL_WIDTH	243
#define JAVA_VK_G	71
#define JAVA_VK_GREATER	160
#define JAVA_VK_H	72
#define JAVA_VK_HALF_WIDTH	244
#define JAVA_VK_HELP	156
#define JAVA_VK_HIRAGANA	242
#define JAVA_VK_HOME	36
#define JAVA_VK_I	73
#define JAVA_VK_INPUT_METHOD_ON_OFF	263
#define JAVA_VK_INSERT	155
#define JAVA_VK_INVERTED_EXCLAMATION_MARK	518
#define JAVA_VK_J	74
#define JAVA_VK_JAPANESE_HIRAGANA	260
#define JAVA_VK_JAPANESE_KATAKANA	259
#define JAVA_VK_JAPANESE_ROMAN	261
#define JAVA_VK_K	75
#define JAVA_VK_KANA	21
#define JAVA_VK_KANA_LOCK	262
#define JAVA_VK_KANJI	25
#define JAVA_VK_KATAKANA	241
#define JAVA_VK_KP_DOWN	225
#define JAVA_VK_KP_LEFT	226
#define JAVA_VK_KP_RIGHT	227
#define JAVA_VK_KP_UP	224
#define JAVA_VK_L	76
#define JAVA_VK_LEFT	37
#define JAVA_VK_LEFT_PARENTHESIS	519
#define JAVA_VK_LESS	153
#define JAVA_VK_M	77
#define JAVA_VK_META	157
#define JAVA_VK_MINUS	45
#define JAVA_VK_MODECHANGE	31
#define JAVA_VK_MULTIPLY	106
#define JAVA_VK_N	78
#define JAVA_VK_NONCONVERT	29
#define JAVA_VK_NUM_LOCK	144
#define JAVA_VK_NUMBER_SIGN	520
#define JAVA_VK_NUMPAD0	96
#define JAVA_VK_NUMPAD1	97
#define JAVA_VK_NUMPAD2	98
#define JAVA_VK_NUMPAD3	99
#define JAVA_VK_NUMPAD4	100
#define JAVA_VK_NUMPAD5	101
#define JAVA_VK_NUMPAD6	102
#define JAVA_VK_NUMPAD7	103
#define JAVA_VK_NUMPAD8	104
#define JAVA_VK_NUMPAD9	105
#define JAVA_VK_O	79
#define JAVA_VK_OPEN_BRACKET	91
#define JAVA_VK_P	80
#define JAVA_VK_PAGE_DOWN	34
#define JAVA_VK_PAGE_UP	33
#define JAVA_VK_PASTE	65487
#define JAVA_VK_PAUSE	19
#define JAVA_VK_PERIOD	46
#define JAVA_VK_PLUS	521
#define JAVA_VK_PREVIOUS_CANDIDATE	257
#define JAVA_VK_PRINTSCREEN	154
#define JAVA_VK_PROPS	65482
#define JAVA_VK_Q	81
#define JAVA_VK_QUOTE	222
#define JAVA_VK_QUOTEDBL	152
#define JAVA_VK_R	82
#define JAVA_VK_RIGHT	39
#define JAVA_VK_RIGHT_PARENTHESIS	522
#define JAVA_VK_ROMAN_CHARACTERS	245
#define JAVA_VK_S	83
#define JAVA_VK_SCROLL_LOCK	145
#define JAVA_VK_SEMICOLON	59
#define JAVA_VK_SEPARATER	108
#define JAVA_VK_SEPARATOR	108
#define JAVA_VK_SHIFT	16
#define JAVA_VK_SLASH	47
#define JAVA_VK_SPACE	32
#define JAVA_VK_STOP	65480
#define JAVA_VK_SUBTRACT	109
#define JAVA_VK_T	84
#define JAVA_VK_TAB	9
#define JAVA_VK_U	85
#define JAVA_VK_UNDEFINED	0
#define JAVA_VK_UNDERSCORE	523
#define JAVA_VK_UNDO	65483
#define JAVA_VK_UP	38
#define JAVA_VK_V	86
#define JAVA_VK_W	87
#define JAVA_VK_WINDOWS	524
#define JAVA_VK_X	88
#define JAVA_VK_Y	89
#define JAVA_VK_Z	90
